package com.netty.server.cmd;

import lombok.Getter;

import java.util.stream.Stream;

/**
 * 指令头,用来区分是什么类型的指令
 *
 * @author: 王霄
 * @date: 2022/1/17 14:56
 **/
public enum Header {

    /**
     * 设备->服务器
     */
    EVENT((byte) 0x01),
    /**
     * 服务器->服务器
     */
    SERVICE((byte) 0x02),
    /**
     * 服务器<->服务器
     */
    RESPONSE((byte) 0xFF);

    @Getter
    private final Byte type;

    Header(Byte type) {
        this.type = type;
    }

    public static Header get(byte b) {
        return Stream.of(Header.values())
                .filter(t -> t.type == b)
                .findFirst()
                .orElseThrow(() -> new RuntimeException("未知的CMD类型"));
    }
}